package com.htl.线程.sleep_wait;

import java.util.concurrent.TimeUnit;

/**
 *  四、如果 synchronized 修饰的是代码块，则锁定的是传入的对象。
 *
 *     能否实现同步，就看锁定的对象是否位同一个对象
 */

public class Synchronized04 {
    public static void main(String[] args) {
        Date4 date4 = new Date4();
        for (int i = 0; i < 5; i++) {
            Integer num = Integer.valueOf(1);//同一个对象
            //会同步，因为 num = 1 在内存中只有一份，5 个线程争夺同一个资源。
            new Thread(()->{
                date4.func(num);
            }).start();
        }
    }
}

class Date4{
    public void func(Integer num){
        synchronized (num){
            System.out.println("start.........");
            try {
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("end...........");
        }
    }
}
